import java.util.Arrays;
import java.util.Comparator;

/**
 * Created with IntelliJ IDEA.
 * Description:主要进行练习java核心技术卷这本书的代码示例
 * User: 石方旭
 * Date: 2022-04-21
 * Time: 11:21
 */

////创建一个Employee,在实例化三个雇员Staff进行比较
//    //分别有姓名，工资，和提高薪资的方法
//class Employee implements Comparable<Employee>{
//    private String name;//Employee的姓名
//    private double salary;//Employee的工资
//
//    //提供构造方法
//    public Employee(String name,double salary) {
//        this.name = name;
//        this.salary = salary;
//    }
//    //提供getter和setter方法
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
//
//    public double getSalary() {
//        return salary;
//    }
//
//    public void setSalary(double salary) {
//        this.salary = salary;
//    }
//
//    //在提供一个涨薪方法
//    public double raiseSalary(double byPercent) {
//          double raise = this.salary*byPercent/100;
//          salary+=raise;
//          return salary;
//    }
//
//    @Override
//    public String toString() {
//        return "Employee{" +
//                "name='" + name + '\'' +
//                ", salary=" + salary +
//                '}';
//    }
//
////    @Override
////    public int compareTo(Employee o) {
////        return (int)(this.salary-o.salary);
////    }
//    @Override
//    public int compareTo(Employee o) {
//        return this.name.compareTo(o.name);
//    }
//}
//
//public class TestDemo {
//
//    public static void main(String[] args) {
//        //实例化出一个employee数组里面放进去3个成员
//        Employee[] staff = new Employee[3];
//        staff[0] = new Employee("张三",89.90);
//        staff[1] = new Employee("李四",99.90);
//        staff[2] = new Employee("王二麻子",9.90);
//        //接下来我们要调用Arrays.sort方法来排序
//        //根据姓名排序
//        Arrays.sort(staff);
//        for(Employee e:staff) {
//            System.out.println(e);
//        }
//        //根据薪资排序
//        Arrays.sort(staff);
//        for(Employee e:staff) {
//            System.out.println(e);
//        }
//    }
//
//}
//
//
////创建一个Employee,在实例化三个雇员Staff进行比较
////分别有姓名，工资，和提高薪资的方法
//class Employee implements Comparator<Employee> {
//    private String name;//Employee的姓名
//    private double salary;//Employee的工资
//
//    //提供构造方法
//    public Employee(String name,double salary) {
//        this.name = name;
//        this.salary = salary;
//    }
//    //提供getter和setter方法
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
//
//    public double getSalary() {
//        return salary;
//    }
//
//    public void setSalary(double salary) {
//        this.salary = salary;
//    }
//
//    //在提供一个涨薪方法
//    public double raiseSalary(double byPercent) {
//        double raise = this.salary*byPercent/100;
//        salary+=raise;
//        return salary;
//    }
//
//    @Override
//    public String toString() {
//        return "Employee{" +
//                "name='" + name + '\'' +
//                ", salary=" + salary +
//                '}';
//    }
//
//    //    @Override
////    public int compareTo(Employee o) {
////        return (int)(this.salary-o.salary);
////    }
//
//    @Override
//    public int compare(Employee o1, Employee o2) {
//        return 0;
//    }
//
//
//}
//
//class SalaryComparator implements Comparator<Employee>{
//
//    @Override
//    public int compare(Employee o1, Employee o2) {
//        return (int)(o1.getSalary()-o2.getSalary());
//    }
//}
//
//class NameComparator implements  Comparator<Employee> {
//
//    @Override
//    public int compare(Employee o1, Employee o2) {
//        return o1.getName().compareTo(o2.getName());
//    }
//}
//
//public class TestDemo {
//
//    public static void main(String[] args) {
//        //实例化出一个employee数组里面放进去3个成员
//        Employee[] staff = new Employee[3];
//        staff[0] = new Employee("王二麻子",9.90);
//        staff[1] = new Employee("张三",89.90);
//        staff[2] = new Employee("李四",99.90);
//        //接下来我们要调用Arrays.sort方法来排序
//        //根据姓名排序
//        NameComparator name = new NameComparator();
//        Arrays.sort(staff,name);
//        for(Employee e : staff) {
//            System.out.println(e);
//        }
//    }
//
//}

/**
 * 深拷贝与浅拷贝  cloneable接口
 */
//浅拷贝
//class Money{
//    public double m =763.014;
//
//    @Override
//    public String toString() {
//        return "Money{" +
//                "m=" + m +
//                '}';
//    }
//}
//class Person implements Cloneable{
//    public double salary =8520.90;
//    Money money = new Money();
//
//    public double getSalary() {
//        return salary;
//    }
//
//    public void setSalary(double salary) {
//        this.salary = salary;
//    }
//
//    @Override
//    public String toString() {
//        return "Person{" +
//                "salary=" + salary +
//                '}';
//    }
//    @Override
//    protected Object clone() throws CloneNotSupportedException {
//        return super.clone();
//    }
//
//}
//
//public class TestDemo {
//
//    public static void main(String[] args) throws CloneNotSupportedException {
//      Person person1 = new Person();
//      Person person2 = (Person)person1.clone();
//        System.out.println("person1->"+person1.salary);
//        System.out.println("person2->"+person2.salary);
//        System.out.println("person1->"+person1.money.m);
//        System.out.println("person2->"+person2.money.m);
//        person1.salary = 7.0;
//        person1.money.m=71.22;
//        System.out.println("==========下面是改变之后的结果============");
//        System.out.println("person1->"+person1.salary);
//        System.out.println("person2->"+person2.salary);
//        System.out.println("person1->"+person1.money.m);
//        System.out.println("person2->"+person2.money.m);
//
//    }
//
//}
////达到深拷贝
//class Money implements Cloneable{
//    public double m =763.014;
//
//    @Override
//    public String toString() {
//        return "Money{" +
//                "m=" + m +
//                '}';
//    }
//
//    @Override
//    protected Object clone() throws CloneNotSupportedException {
//        return super.clone();
//    }
//}
//class Person implements Cloneable{
//    public double salary =8520.90;
//    Money money = new Money();
//
//    public double getSalary() {
//        return salary;
//    }
//
//    public void setSalary(double salary) {
//        this.salary = salary;
//    }
//
//    @Override
//    public String toString() {
//        return "Person{" +
//                "salary=" + salary +
//                '}';
//    }
//    @Override
//    protected Object clone() throws CloneNotSupportedException {
//        //要先将这个对象的拷贝，拷贝到一个临时对象上去
//        Person tmp = (Person)super.clone();
//        //再将这个对象的引用拷贝到那个引用上去
//        tmp.money =(Money)this.money.clone();
//        return tmp;
//    }
//
//}
//
//public class TestDemo {
//
//    public static void main(String[] args) throws CloneNotSupportedException {
//        Person person1 = new Person();
//        Person person2 = (Person)person1.clone();
//        System.out.println("person1->"+person1.salary);
//        System.out.println("person2->"+person2.salary);
//        System.out.println("person1->"+person1.money.m);
//        System.out.println("person2->"+person2.money.m);
//        person1.salary = 7.0;
//        person1.money.m=71.22;
//        System.out.println("==========下面是改变之后的结果============");
//        System.out.println("person1->"+person1.salary);
//        System.out.println("person2->"+person2.salary);
//        System.out.println("person1->"+person1.money.m);
//        System.out.println("person2->"+person2.money.m);
//
//    }
//
//}

/**
 *
 */

public class TestDemo {

    public static void func(int a) {
         if(a==10) {
            throw new RuntimeException("a==10");
            // System.out.println("错误");
         }
    }

    public static void main(String[] args) {
         try{
             func(10);
         } catch (RuntimeException e) {
             System.out.println("错误");
         } catch(Exception e){

         }
        System.out.println("正常业务逻辑！！！");
    }

}
